use std::collections::HashMap;
pub struct ElementTable {
    pub table: HashMap<(char, char), f64>,
}
impl ElementTable {
    pub fn new() -> Self {
        Self {
            table: HashMap::from([
                (('H', ' '), 1.00794),
                (('H','e'), 4.002602),
                (('L','i'), 6.941),
                (('B','e'), 9.012182),
                (('B',' '), 10.811),
                (('C',' '), 12.017),
                (('N', ' '), 14.0067),
                (('O', ' '), 15.9994),
                (('F', ' '), 18.9984032),
                (('N', 'e'), 20.1797),
                (('N','a'), 22.98976928),
                (('M','g'), 24.3050),
                (('A','l'), 26.9815386),
                (('S','i'), 28.0855),
                (('P',' '), 30.973762),
                (('S',' '), 32.065),
                (('C','l'), 35.453),
                (('A','r'), 39.0983),
                (('K',' '), 39.0983),
                (('C','a'), 40.078),
                (('S','c'), 44.955912),
                (('T','i'), 47.867),
                (('V',' '), 50.9415),
                (('C','r'), 51.9961),
                (('M','n'), 54.938045),
                (('F','e'), 55.845),
                (('C','o'), 58.933195),
                (('N','i'), 58.6934),
                (('C','u'), 63.546),
                (('Z','n'), 65.409),
                (('G','a'), 69.723),
                (('G','e'), 72.64),
                (('A','s'), 74.92160),
                (('S','e'), 78.96),
                (('B','r'), 79.904),
                (('K','r'), 83.798),
                (('R','b'), 85.4678),
                (('S','r'), 87.62),
                (('Y',' '), 88.90585),
                (('Z','r'), 91.224),
                (('N','b'), 92.90638),
                (('M','o'), 95.94),
                (('T','c'), 97.9072),
                (('R','u'), 101.07),
                (('R','h'), 102.90550),
                (('P','d'), 106.42),
                (('A','g'), 107.8682),
                (('C','d'), 112.411),
                (('I','n'), 114.818),
                (('S','n'), 118.710),
                (('S','b'), 121.760),
                (('T','e'), 127.60),
                (('I',' '), 126.90447),
                (('X','e'), 131.293),
                (('C','s'), 132.9054519),
                (('B','a'), 137.327),
                (('L','a'), 138.90547),
                (('C','e'), 140.116),
                (('P','r'), 140.90765),
                (('N','d'), 144.242),
                (('P','m'), 145.0),
                (('S','m'), 150.36),
                (('E','u'), 151.964),
                (('G','d'), 157.25),
                (('T','b'), 158.92535),
                (('D','y'), 162.500),
                (('H','o'), 164.93032),
                (('E','r'), 167.259),
                (('T','m'), 168.93421),
                (('Y','b'), 173.04),
                (('L','u'), 174.967),
                (('H','f'), 178.49),
                (('T','a'), 180.94788),
                (('W',' '), 183.84),
                (('R','e'), 186.207),
                (('O','s'), 190.23),
                (('I','r'), 192.217),
                (('P','t'), 195.084),
                (('A','u'), 196.966569),
                (('H','g'), 200.59),
                (('T','l'), 204.3833),
                (('P','b'), 207.2),
                (('B','i'), 208.98040),
                (('P','o'), 208.9824),
                (('A','t'), 209.9871),
                (('R','n'), 222.0176),
                (('F','r'), 223.0),
                (('R','a'), 226.0),
                (('A','c'), 227.0),
                (('T','h'), 232.03806),
                (('P','a'), 231.03588),
                (('U',' '), 238.02891),
                (('N','p'), 237.0),
                (('P','u'), 244.0),
                (('A','m'), 243.0),
                (('C','m'), 247.0),
                (('B','k'), 247.0),
                (('C','f'), 251.0),
                (('E','s'), 252.0),
                (('F','m'), 257.0),
                (('M','d'), 258.0),
                (('N','o'), 259.0),
                (('L','r'), 262.0),
                (('R','f'), 261.0),
                (('D','b'), 262.0),
                (('S','g'), 266.0),
                (('B','h'), 264.0),
                (('H','s'), 277.0),
                (('M','t'), 268.0),
                (('D','s'), 271.0),
                (('R','g'), 272.0),
                (('C','n'), 285.0),
                (('N','h'), 284.0),
                (('F','l'), 289.0),
                (('M','c'), 288.0),
                (('L','v'), 293.0),
                (('T','s'), 294.0),
                (('O','g'), 294.0),
            ]),
        }
    }
    pub fn get_mw(&self, elem: (char, char)) -> Option<f64> {
        self.table.get(&elem).copied()
    }
}
